﻿<?php
	//数据库操作文件

	//函数里面的代码只有手动调用才会执行，它不会自动执行

	//全局变量：函数外部的变量
	//局部变量：函数内部的变量

	//数据库连接函数
	//数据库名没有默认值，没有默认值的参数要写在有默认值的参数的前面 $db_name为必传参数
	function db_connect($db_name,$host='127.0.0.1',$db_user='root',$db_pwd='root',$charset='utf8'){
		//数据库连接
		 $link=mysqli_connect($host,$db_user,$db_pwd,$db_name);
		 //判断数据库是否连接成功
		 if(!$link){
				// echo '数据库连接失败';die;
				echo '<script>alert("数据库连接失败");history.go(-1);</script>';//返回到前一个页面
				die;
		}
		// 设置数据库传输编码 mysqli_query(数据库连接成功的连接对象，数据库操作sql语句)
		mysqli_query($link,'set names '.$charset);

		return $link;//有返回值，则需要接住它，init.php文件里面 $link=db_connect()
	}


	//删除
	function del($table,$where=array()){

		//print_r($where);die;
		/*输出如下：
		Array
			(
			    [0] => 1
			    [1] => 2
			    [2] => 3
			)
		 */
		if (is_array($where)) {//判断$where是不是一个数组
			//implode() 函数返回由数组元素组合成的字符串。
			$str=implode(',',$where);//结果：1,2,3
			$where="id in($str)";
			//结果：delete from `news` where id in(1,2,3)
		}
		//数据库删除语句
		$sql="delete from `$table` where $where";
		//$sql="delete from `$table` where id in (1,2,3)";//删除id=1,2,3的记录
		//执行语句
		mysqli_query($GLOBALS['link'],$sql);
		//返回受影响的行数
		return mysqli_affected_rows($GLOBALS['link']);
	}

	//添加
	function add($table,$where=array()){
		//组装值
		$v="'".implode("','",array_values($where))."'";//'1','2','3'
		//组装字段
		$key="`".implode("`,`",array_keys($where))."`";//`username`,`password`,`sex`

		$sql="insert into `$table`($key)values($v)";//insert into `cate`(`username`,`password`,`sex`) values('1','2','3')
       //echo $sql;die;
		//执行语句
	 	$result=mysqli_query($GLOBALS['link'],$sql);
		//返回
		return mysqli_affected_rows($GLOBALS['link']);
	}

	//编辑
	function edit($table,$where,$data){
		$filed='';
		foreach ($data as $k => $v) {
			$filed.="`$k` = '$v',";
		}
		$filed=substr($filed,0,-1);//结果：`username` = '1',`password` = '2',`sex` = '3'

		//$sql="update `$table` set $filed  where id=$where";
	$sql="update `$table` set $filed  where $where";
 // echo $sql;
		$result=mysqli_query($GLOBALS['link'],$sql);
		return mysqli_affected_rows($GLOBALS['link']);
	}

	//查询一条语句
	function getSelectByOne($table,$where,$field='*'){//$where不能放在$fieldz之后
		if (is_array($where)) {
			$str='';
			$i=0;
			foreach ($where as $k => $v) {
				//如果是循环到最后一次则不拼接and
				//count($where)数组的长度

				//$i==count($where)-1 可以书橱正确的结果。$k==count($where)-1 不可以输出正确的结果，因为$k是字符串
				if ($i==count($where)-1) {
					$str.="`$k` = '$v'";//如果是($k==count($where)-1),第二次循环执行这条语句，结果：`username` ='1' and `password` ='2' and
				}else{
					$str.="`$k` ='$v' and ";//如果是($k==count($where)-1),第一次循环执行这条语句，结果：`username` ='1' and
				}
				$i++;
			}
			//echo $str;die;
			$where=$str;//替换掉原来的
		}
		//$sql="select $field from `$table` where username= and password= limit 1";
		$sql="select $field from `$table` where $where limit 1";
// echo $sql;
		$result=mysqli_query($GLOBALS['link'],$sql);
		return mysqli_fetch_assoc($result);
	}

	//查询多条
	function getSelect($table,$where=1,$order='',$limit='',$field='*'){//$where=1也表示查询所有
		$where1='';
		$data=array();
		if (!empty($limit)) {
			$where1="limit $limit ";
		}
		if (!empty($order)) {
			$order='order by '.$order;//select * from `cate` where id>1 and id<10 order by id desc
		}

		$sql="select $field from $table where $where $order $where1";//select * from `cate` where id>1 and id<10
  // echo $sql;
		$result=mysqli_query($GLOBALS['link'],$sql);
		while ($arr=mysqli_fetch_assoc($result)) {
			$data[]=$arr;
		}
		return $data;
	}




?>